In an Integrated Circuit (IC) design, electronic components and wiring are represented by a set of geometric shapes and patterns from a physical perspective. A pattern is a set of polygon features in an area of an IC design. Electronic design automation (EDA) tools interact with these shapes and patterns throughout the IC design and verification process. Many physical design EDA applications require the identification of critical points in the design or hot spots to resolve issues with the design prior to printing the pattern. A hot spot may be an issue with the layout configuration of an IC design, usability of an IC design or manufacturability of an IC design.
One solution for detecting hot spots is with the use of simulation, simulating the actual lithography process on the design data to predict the eventual behavior of the printed pattern on a silicon wafer. But detecting hot spots with real time lithography simulations is often costly and time-consuming. It is highly desirable to limit the number of simulations that must be performed in the design process.
Patterns and shapes previously verified by lithography simulations can be stored in a database with a corresponding lithoscore, a score that indicates a severity rating for a hot spot the pattern or portion of a pattern in a layout, for the future use with EDA tools. When an EDA tool encounters a pattern, it may search a pattern database for a pattern match to retrieve the corresponding lithoscore for a similar pattern instead of conducting expensive lithography simulations. If the search result turns out to be positive, then no simulation will be needed for this pattern. Pattern analysis and matching play an important role in this approach.
Pattern matching is the matching of polygons and their vertices between two patterns. The problem with the pattern library and pattern matching approach is that accurate hot spot detection requires generating millions of geometric patterns to be able to identify every conceivable set of shapes or patterns both with and without hot spots. A library containing every possible pattern is both prohibitively time-consuming to build and store, and a large library is inefficient to use if a large number of comparisons with the patterns are necessary to find a matching pattern. Furthermore, a pattern may have a similar hot spot to a pattern in the library but may not be identified in a comparison with a similar pattern in the library because the two patterns are not identical. Thus, there is a need to build smaller library with enough information to speed up the search time and increase the accuracy in comparing patterns.